package com.weaving.monitor.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 工厂机台车速数据访问接口
 * 
 * 功能说明：
 * 1. 提供对factory_machine_speed表的数据库操作
 * 2. 根据机台ID和时间范围查询车速数据
 * 3. 为车速统计提供数据支持
 * 
 * 注解说明：
 * - @Mapper: MyBatis注解，标识这是一个Mapper接口
 * 
 * 主要功能：
 * 1. 根据机台ID和时间范围查询车速列表
 * 2. 过滤掉速度为0的记录
 * 
 * @author 系统开发团队
 * @version 1.0
 * @since 2024-01-01
 */
@Mapper
public interface FactoryMachineSpeedMapper {
    
    /**
     * 根据机台ID和时间范围查询平均车速
     * 
     * 功能说明：
     * 1. 根据机台ID和时间范围查询车速数据
     * 2. 查询条件：machine_id=指定的机台ID and create_time between startTime and endTime and speed > 0
     * 3. 直接返回平均车速，避免在Java中计算
     * 
     * SQL语句：
     * SELECT AVG(speed) FROM factory_machine_speed WHERE machine_id=#{machineId} AND create_time BETWEEN #{startTime} AND #{endTime} AND speed > 0
     * 
     * @param machineId 机台ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 平均车速，如果没有数据则返回null
     */
    Double selectAverageSpeedByMachineIdAndTimeRange(@Param("machineId") String machineId, 
                                                    @Param("startTime") LocalDateTime startTime, 
                                                    @Param("endTime") LocalDateTime endTime);
}
